package arrray;

/**
 * @author huangxianjin
 * @date 2025/8/26 23:06
 * @description ""
 */
public class LC_12 {
    //自己的做法-有点笨
    //1 <= num <= 3999
    public String intToRoman(int num) {
        StringBuilder sb = new StringBuilder();
        //处理千位
        int t = num / 1000;
        for (int i = 0; i < t; i++) {
            sb.append("M");
        }
        //处理百位
        int h = num % 1000 / 100;
        if (h == 9) {
            sb.append("CM");
        } else if (h == 4) {
            sb.append("CD");
        } else if (h >= 5) {
            sb.append("D");
            for (int i = 0; i < h - 5; i++) {
                sb.append("C");
            }
        } else {
            for (int i = 0; i < h; i++) {
                sb.append("C");
            }
        }
        //处理十位
        int m = num % 100 / 10;
        if (m == 9) {
            sb.append("XC");
        } else if (m == 4) {
            sb.append("XL");
        } else if (m >= 5) {
            sb.append("L");
            for (int i = 0; i < m - 5; i++) {
                sb.append("X");
            }
        } else {
            for (int i = 0; i < m; i++) {
                sb.append("X");
            }
        }

        //处理个位
        int n = num % 10;
        if (n == 9) {
            sb.append("IX");
        } else if (n == 4) {
            sb.append("IV");
        } else if (n >= 5) {
            sb.append("V");
            for (int i = 0; i < n - 5; i++) {
                sb.append("I");
            }
        } else {
            for (int i = 0; i < n; i++) {
                sb.append("I");
            }
        }
        return sb.toString();
    }


    public String intToRoman2(int num) {
        int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

        StringBuffer roman = new StringBuffer();
        for (int i = 0; i < values.length; ++i) {
            int value = values[i];
            String symbol = symbols[i];
            while (num >= value) {
                num -= value;
                roman.append(symbol);
            }
            if (num == 0) {
                break;
            }
        }
        return roman.toString();
    }
}
